import Vue from 'vue';
import iView from 'iview';
import VueRouter from 'vue-router';
import {routers, otherRouter, appRouter} from './router';
import Vuex from 'vuex';
import Util from './libs/util';
import App from './app.vue';
import Cookies from 'js-cookie';
import 'iview/dist/styles/iview.css';
import axios from 'axios' ;
import VueI18n from 'vue-i18n';
import Locales from './locale';
import zhLocale from 'iview/src/locale/lang/zh-CN';
import enLocale from 'iview/src/locale/lang/en-US';

// 引入echarts
import echarts from 'echarts'
//
Vue.prototype.$echarts = echarts


Vue.use(VueRouter);
Vue.use(Vuex);
Vue.use(VueI18n);
Vue.use(iView);
// Vue.use(axios);

// 自动设置语言
const navLang = navigator.language;
const localLang = (navLang === 'zh-CN' || navLang === 'en-US') ? navLang : false;
const lang = window.localStorage.getItem('language') || localLang || 'zh-CN';

Vue.config.lang = lang;

// 多语言配置
const locales = Locales;
const mergeZH = Object.assign(zhLocale, locales['zh-CN']);
const mergeEN = Object.assign(enLocale, locales['en-US']);
Vue.locale('zh-CN', mergeZH);
Vue.locale('en-US', mergeEN);

// 路由配置
const RouterConfig = {
    // mode: 'history',
    routes: routers
};

const router = new VueRouter(RouterConfig);

router.beforeEach((to, from, next) => {
    iView.LoadingBar.start();
    Util.title(to.meta.title);
    if (Cookies.get('locking') === '1' && to.name !== 'locking') {  // 判断当前是否是锁定状态
        iView.LoadingBar.finish();
        next(false);
        router.replace({
            name: 'locking'
        });
    } else if (Cookies.get('locking') === '0' && to.name === 'locking') {
        iView.LoadingBar.finish();
        next(false);
    } else {
        if (!Cookies.get('user') && !Cookies.get('access_token') && to.name !== 'login') {  // 判断是否已经登录且前往的页面不是登录页
            next({
                name: 'login'
            });
        } else if (Cookies.get('user') && to.name === 'login') {  // 判断是否已经登录且前往的是登录页
            next({
                name: 'home'
            });
        } else {
            next();
        }
    }
});

router.afterEach(() => {
    iView.LoadingBar.finish();
    window.scrollTo(0, 0);
});
// 状态管理
const store = new Vuex.Store({
    state: {
        routers: [
            otherRouter,
            ...appRouter
        ],
        menuList: [],
        tagsList: [...otherRouter.children],
        pageOpenedList: [],
        currentPageName: '',
        currentPath: [
            {
                title: '环境监测中心',
                path: '',
                name: 'home_index'
            }
        ],  // 面包屑数组
        openedSubmenuArr: [],  // 要展开的菜单数组
        menuTheme: '', // 主题
        theme: '',
        planData: [
            {
                "id": 1,
                "name": "2017年A地块生产计划",
                "year": 2017,
                "afarm_block": "A地块",
                "crops_rotation": '茬口A',
                "crop_name": "枸杞幼龄树",
                "start_date": "2017年1月1日",
                "end_date": "-",
                'yield': '-',
                'intro': '这是一条很简单的介绍噢～',
                'N': 11,
                'P': 12,
                'K': 13,
                'organic_fert':66.6,
                'water_amount':77.7,
                'task_detail':'这是计划详情噢',
                'execute_detail':'这是执行任务详情',
                'farmer_id':'张三',
                'status':'进行中',
            },
            {
                "id": 2,
                "name": "2018年B地块生产计划",
                "year": 2018,
                "afarm_block": "B地块",
                "crops_rotation": '茬口B',
                "crop_name": "枸杞幼龄树",
                "start_date": "2018年1月1日",
                "end_date": "-",
                'yield': '-',
                'intro': '这是一条很简单的介绍噢～',
                'N': 12,
                'P': 13,
                'K': 155,
                'organic_fert':11.1,
                'water_amount':99.9,
                'task_detail':'这是计划详情噢',
                'execute_detail':'这是执行任务详情',
                'farmer_id':'张三',
                'status':'进行中',
            },
            // {
            //     "id": 2,
            //     "name": "2017年B地块生产计划",
            //     "afarm_block": "B地块",
            //     "crop_name": "葡萄树",
            //     "start_date": "2018年7月1日",
            //     "end_date": "2018年12月1日",
            //     "fert_amount": [
            //         {
            //             "n": 80
            //         },
            //         {
            //             "p": 40
            //         },
            //         {
            //             "k": 35
            //         }
            //     ],
            //     "water_amount": 250,
            //     "task_detail": [
            //         {
            //             "id": 1,
            //             "task_id": 1,
            //             "name": "春梢期浇水1",
            //             "start_datetime": "2017年4月1日 12:00",
            //             "fert_amount": [
            //                 {
            //                     "n": 0
            //                 },
            //                 {
            //                     "p": 0
            //                 },
            //                 {
            //                     "k": 0
            //                 }
            //             ],
            //             "water_amount": 20,
            //             "farmer": "张三",
            //             "action_detail": [
            //                 {
            //                     "id": 1,
            //                     "action_id": 1,
            //                     "name": "开水泵1",
            //                     "start_datetime": "2017年4月1日 12:00",
            //                     "farmer": "张三",
            //                     "status": "完成"
            //                 },
            //                 {
            //                     "id": 2,
            //                     "action_id": 2,
            //                     "name": "开电磁阀1",
            //                     "start_datetime": "2017年4月1日 12:00",
            //                     "farmer": "张三",
            //                     "status": "完成"
            //                 },
            //                 {
            //                     "id": 3,
            //                     "action_id": 3,
            //                     "name": "开电磁阀2",
            //                     "start_datetime": "2017年4月1日 12:00",
            //                     "farmer": "张三",
            //                     "status": "完成"
            //                 },
            //                 {
            //                     "id": 4,
            //                     "action_id": 4,
            //                     "name": "关水泵1",
            //                     "start_datetime": "2017年4月1日 13:00",
            //                     "farmer": "张三",
            //                     "status": "未完成"
            //                 },
            //                 {
            //                     "id": 5,
            //                     "action_id": 5,
            //                     "name": "关电磁阀1",
            //                     "start_datetime": "2017年4月1日 13:00",
            //                     "farmer": "张三",
            //                     "status": "未完成"
            //                 },
            //                 {
            //                     "id": 4,
            //                     "action_id": 4,
            //                     "name": "关电磁阀2",
            //                     "start_datetime": "2017年4月1日 13:00",
            //                     "farmer": "张三",
            //                     "status": "未完成"
            //                 }
            //             ],
            //             "status": "进行中"
            //         }
            //     ],
            //     'yield': '-',
            //     "status": "已完成"
            // },
            // {
            //     "id": 3,
            //     "name": "2019年C地块生产计划",
            //     "afarm_block": "C地块",
            //     "crop_name": "玉米",
            //     "start_date": "2019年1月1日",
            //     "end_date": "-",
            //     'yield': '-',
            //     "fert_amount": [
            //         {
            //             "n": 80
            //         },
            //         {
            //             "p": 40
            //         },
            //         {
            //             "k": 35
            //         }
            //     ],
            //     "water_amount": 250,
            //     "task_detail": [
            //         {
            //             "id": 1,
            //             "task_id": 1,
            //             "name": "春梢期浇水1",
            //             "start_datetime": "2017年4月1日 12:00",
            //             "fert_amount": [
            //                 {
            //                     "n": 0
            //                 },
            //                 {
            //                     "p": 0
            //                 },
            //                 {
            //                     "k": 0
            //                 }
            //             ],
            //             "water_amount": 20,
            //             "farmer": "张三",
            //             "action_detail": [
            //                 {
            //                     "id": 1,
            //                     "action_id": 1,
            //                     "name": "开水泵1",
            //                     "start_datetime": "2017年4月1日 12:00",
            //                     "farmer": "张三",
            //                     "status": "完成"
            //                 },
            //                 {
            //                     "id": 2,
            //                     "action_id": 2,
            //                     "name": "开电磁阀1",
            //                     "start_datetime": "2017年4月1日 12:00",
            //                     "farmer": "张三",
            //                     "status": "完成"
            //                 },
            //                 {
            //                     "id": 3,
            //                     "action_id": 3,
            //                     "name": "开电磁阀2",
            //                     "start_datetime": "2017年4月1日 12:00",
            //                     "farmer": "张三",
            //                     "status": "完成"
            //                 },
            //                 {
            //                     "id": 4,
            //                     "action_id": 4,
            //                     "name": "关水泵1",
            //                     "start_datetime": "2017年4月1日 13:00",
            //                     "farmer": "张三",
            //                     "status": "未完成"
            //                 },
            //                 {
            //                     "id": 5,
            //                     "action_id": 5,
            //                     "name": "关电磁阀1",
            //                     "start_datetime": "2017年4月1日 13:00",
            //                     "farmer": "张三",
            //                     "status": "未完成"
            //                 },
            //                 {
            //                     "id": 4,
            //                     "action_id": 4,
            //                     "name": "关电磁阀2",
            //                     "start_datetime": "2017年4月1日 13:00",
            //                     "farmer": "张三",
            //                     "status": "未完成"
            //                 }
            //             ],
            //             "status": "进行中"
            //         }
            //     ],
            //     "status": "未开始"
            // },
        ],
        planDetail:[
            {
                planId: 1,
                name: '任务001',
                intro: '这是任务的介绍，很简单的介绍噢',
                blockId: 1,
                fertN: 12,
                fertP: 13,
                fertK: 14,
                fertOrganic: 15,
                watering: 16,
                planedStartTime: "2017-09-01",
                status: '未开始',
            },
            {
                planId: 2,
                name: '任务002',
                intro: '这是任务的介绍，很简单的介绍噢',
                blockId: 2,
                fertN: 22,
                fertP: 33,
                fertK: 44,
                fertOrganic: 55,
                watering: 66,
                planedStartTime: "2018-09-01",
                status: '未开始',
            }
        ]
    },
    getters: {},
    mutations: {
        setPlanDetail(state,data){
          state.planDetail.push(data);
        },
        setPlanData(state, data) {
            state.planData.push(data)
        },
        deletPlanData(state,index){
            state.planData.splice(index,1);
        },
        setTagsList(state, list) {
            state.tagsList.push(...list);
        },
        increateTag(state, tagObj) {
            state.pageOpenedList.splice(1, 0, tagObj);
        },
        removeTag(state, name) {
            state.pageOpenedList.map((item, index) => {
                if (item.name === name) {
                    state.pageOpenedList.splice(index, 1);
                }
            });
        },
        moveToSecond(state, index) {
            let openedPage = state.pageOpenedList[index];
            state.pageOpenedList.splice(index, 1);
            state.pageOpenedList.splice(1, 0, openedPage);
            localStorage.pageOpenedList = JSON.stringify(state.pageOpenedList);
        },
        setOpenedList(state) {
            state.pageOpenedList = localStorage.pageOpenedList ? JSON.parse(localStorage.pageOpenedList) : [otherRouter.children[0]];
        },
        setCurrentPath(state, pathArr) {
            state.currentPath = pathArr;
        },
        setCurrentPageName(state, name) {
            state.currentPageName = name;
        },
        addOpenSubmenu(state, name) {
            let hasThisName = false;
            let isEmpty = false;
            if (name.length === 0) {
                isEmpty = true;
            }
            if (state.openedSubmenuArr.indexOf(name) > -1) {
                hasThisName = true;
            }
            if (!hasThisName && !isEmpty) {
                state.openedSubmenuArr.push(name);
            }
        },
        clearOpenedSubmenu(state) {
            state.openedSubmenuArr.length = 0;
        },
        changeMenuTheme(state, theme) {
            state.menuTheme = theme;
        },
        changeMainTheme(state, mainTheme) {
            state.theme = mainTheme;
        },
        lock(state) {
            Cookies.set('locking', '1');
        },
        unlock(state) {
            Cookies.set('locking', '0');
        },
        setMenuList(state, menulist) {
            state.menuList = menulist;
        },
        //遍历路由 生成左侧菜单
        updateMenulist(state) {
            let accessCode = parseInt(Cookies.get('access'));
            let menuList = [];
            appRouter.forEach((item, index) => {
                if (item.access !== undefined) {
                    if (Util.showThisRoute(item.access, accessCode)) {
                        if (item.children.length <= 1) {
                            menuList.push(item);
                        } else {
                            let i = menuList.push(item);
                            let childrenArr = [];
                            childrenArr = item.children.filter(child => {
                                if (child.access !== undefined) {
                                    if (child.access === accessCode) {
                                        return child;
                                    }
                                } else {
                                    return child;
                                }
                            });
                            menuList[i - 1].children = childrenArr;
                        }
                    }
                } else {
                    if (item.children.length <= 1) {
                        menuList.push(item);
                    } else {
                        let i = menuList.push(item);
                        let childrenArr = [];
                        childrenArr = item.children.filter(child => {
                            if (child.access !== undefined) {
                                if (Util.showThisRoute(child.access, accessCode)) {
                                    return child;
                                }
                            } else {
                                return child;
                            }
                        });
                        menuList[i - 1].children = childrenArr;
                    }
                }
            });
            state.menuList = menuList;
        },
        setAvator(state, path) {
            localStorage.avatorImgPath = path;
        }
    },
    actions: {}
});

new Vue({
    el: '#app',
    router: router,
    store: store,
    render: h => h(App),
    data: {
        currentPageName: ''
    },
    mounted() {
        this.currentPageName = this.$route.name;
    },
    methods: {},
    created() {
        let tagsList = [];
        appRouter.map((item) => {
            if (item.children.length <= 1) {
                tagsList.push(item.children[0]);
            } else {
                tagsList.push(...item.children);
            }
        });
        this.$store.commit('setTagsList', tagsList);
    }
});


